﻿/*
 * Script: "geolocalizacion_consultar_senal.js"
 * Copyright 2011 SISVOX.
 *
 * Licenciado bajo SISVOX, Version 1.0 (la "Licencia");
 * El codigo presente que compone este Software es propiedad unica y
 * exclusivamente de SISVOX, por lo tanto, usted no podrá utilizar este
 * archivo excepto en cumplimiento de la Licencia ofrecida por SISVOX.
 * Usted puede obtener una copia de la Licencia en:
 *
 *      Soluciones Integrales de Software Vox (SISVOX)
 *                 http://www.sisvox.com
 *
 *     - Carlos Calvo      <ccalvo@sisvox.com>
 *     - Andres Hernandez  <ahernandez@sisvox.com>
 *
 * A menos que sea requerido por la ley aplicable o se acuerde por escrito,
 * el software distribuido bajo la licencia se distribuye "TAL CUAL", CON
 * LAS GARANTIAS Y CONDICIONES expresadas en la "Licencia".
 */
 
 
// Inicialización de Variables

var map				= null;
var markers			= null;
var infoBubbleTurno = null;
var markerClusterer = null;
var ClustereOnOff	= "on";
var ancho_peq 		= 0;
var alto_peq 		= 0;
var ancho_med 		= 0;
var alto_med 		= 0;

// Variables donde se guardan los datos de las Señales a mostrar
var lista_id_senal 			= null;
var lista_coord_x 			= null;
var lista_coord_y 			= null;
var lista_id_tipo_sen 		= null;
var lista_id_categ_sen 		= null;
var lista_id_senal_tra 		= null;
var lista_desc_image_sen 	= null;
var lista_id_estad_sen 		= null;
var lista_id_status_sen 	= null;

var lista_tipo_sen_id 		= null;
var lista_tipo_sen_nombre 	= null;
var nombre_tipo_sen 		= new Array();
var lista_categ_sen_id 		= null;
var lista_categ_sen_nombre	= null;
var nombre_categ_sen 		= new Array();
var lista_senal_tra_id 		= null;
var lista_senal_tra_nombre 	= null;
var nombre_senal_tra 		= new Array();
var lista_estad_sen_id 		= null;
var lista_estad_sen_nombre 	= null;
var nombre_estad_sen 		= new Array();

// Dimension de las Imagenes de las Señales
var lista_img_id 			= null;
var lista_img_ancho_peq 	= null;
var lista_img_alto_peq 		= null;
var lista_img_ancho_med 	= null;
var lista_img_alto_med 		= null;
var img_dimension_ancho_peq = new Array();
var img_dimension_alto_peq 	= new Array();
var img_dimension_ancho_med = new Array();
var img_dimension_alto_med 	= new Array();


// =================================================================================================================
// ================================= MAPA DE GEOLOCALIZACION - CONSULTAR SEÑAL =====================================
// =================================================================================================================

function geolocalizacion_consultar_senal( overviewMap ) {
	
	// Inicializamos los Datos de los Resultados a mostrar
	inicializar_datos();
	
	// Creamos el Mapa
	var centerPoint = new google.maps.LatLng( parseFloat(mapa_coord_x).toFixed(8), parseFloat(mapa_coord_y).toFixed(8) );
	var myOptions = {
		zoom: parseInt(mapa_zoom),
		zoomControlOptions: {
      		style: google.maps.ZoomControlStyle.LARGE
    	},
		center: centerPoint,
		panControl: true,
		mapTypeControl: false,
		scaleControl: true,
		streetViewControl: false,
		mapTypeId: google.maps.MapTypeId.ROADMAP,
		overviewMapControl: overviewMap,
		overviewMapControlOptions: {
    		opened: overviewMap
  		}
	}
	map = new google.maps.Map(document.getElementById("map"), myOptions);
	
	// Inicializamos y Seteamos las Variables de los Marcadores
	pintar_resultados();
	
	// Agregamos Cluster al Mapa
	agregar_markerClusterer();
}


// =================================================================================================================
// ========================================= INICALIZAR LOS DATOS DEL MAPA =========================================
// =================================================================================================================

function inicializar_datos() {
	var h_ls_id_senal 			= document.getElementById("h_ls_id_senal").value;
	lista_id_senal 				= h_ls_id_senal.split( "/*" );
	
	var h_ls_coord_x 			= document.getElementById("h_ls_coord_x").value;
	lista_coord_x 				= h_ls_coord_x.split( "/*" );
	
	var h_ls_coord_y 			= document.getElementById("h_ls_coord_y").value;
	lista_coord_y 				= h_ls_coord_y.split( "/*" );
	
	var h_ls_id_tipo_sen 		= document.getElementById("h_ls_id_tipo_sen").value;
	lista_id_tipo_sen 			= h_ls_id_tipo_sen.split( "/*" );
	
	var h_ls_id_categ_sen 		= document.getElementById("h_ls_id_categ_sen").value;
	lista_id_categ_sen 			= h_ls_id_categ_sen.split( "/*" );
	
	var h_ls_desc_image_sen 	= document.getElementById("h_ls_desc_image_sen").value;
	lista_desc_image_sen 		= h_ls_desc_image_sen.split( "/*" );
	
	var h_ls_id_senal_tra 		= document.getElementById("h_ls_id_senal_tra").value;
	lista_id_senal_tra 			= h_ls_id_senal_tra.split( "/*" );
	
	var h_ls_id_estad_sen 		= document.getElementById("h_ls_id_estad_sen").value;
	lista_id_estad_sen 			= h_ls_id_estad_sen.split( "/*" );
	
	var h_ls_id_status_sen 		= document.getElementById("h_ls_id_status_sen").value;
	lista_id_status_sen 		= h_ls_id_status_sen.split( "/*" );
	
	
	var h_ls_tipo_sen_id 		= document.getElementById("h_ls_tipo_sen_id").value;
	lista_tipo_sen_id 			= h_ls_tipo_sen_id.split( "/*" );
	
	var h_ls_tipo_sen_nombre 	= document.getElementById("h_ls_tipo_sen_nombre").value;
	lista_tipo_sen_nombre 		= h_ls_tipo_sen_nombre.split( "/*" );
	
	nombre_tipo_sen = new Array();
	for ( i = 0; i < lista_tipo_sen_id.length - 1; i++ ) {
		nombre_tipo_sen[lista_tipo_sen_id[i]] 	= lista_tipo_sen_nombre[i];
	}
	
	var h_ls_categ_sen_id 		= document.getElementById("h_ls_categ_sen_id").value;
	lista_categ_sen_id 			= h_ls_categ_sen_id.split( "/*" );
	
	var h_ls_categ_sen_nombre 	= document.getElementById("h_ls_categ_sen_nombre").value;
	lista_categ_sen_nombre		= h_ls_categ_sen_nombre.split( "/*" );
	
	nombre_categ_sen = new Array();
	for ( i = 0; i < lista_categ_sen_id.length - 1; i++ ) {
		nombre_categ_sen[lista_categ_sen_id[i]] 	= lista_categ_sen_nombre[i];
	}
	
	var h_ls_senal_tra_id 		= document.getElementById("h_ls_senal_tra_id").value;
	lista_senal_tra_id 			= h_ls_senal_tra_id.split( "/*" );
	
	var h_ls_senal_tra_nombre 	= document.getElementById("h_ls_senal_tra_nombre").value;
	lista_senal_tra_nombre 		= h_ls_senal_tra_nombre.split( "/*" );
	
	nombre_senal_tra = new Array();
	for ( i = 0; i < lista_senal_tra_id.length - 1; i++ ) {
		nombre_senal_tra[lista_senal_tra_id[i]] 	= lista_senal_tra_nombre[i];
	}
	
	var h_ls_estad_sen_id 		= document.getElementById("h_ls_estad_sen_id").value;
	lista_estad_sen_id 			= h_ls_estad_sen_id.split( "/*" );
	
	var h_ls_estad_sen_nombre 	= document.getElementById("h_ls_estad_sen_nombre").value;
	lista_estad_sen_nombre 		= h_ls_estad_sen_nombre.split( "/*" );
	
	nombre_estad_sen = new Array();
	for ( i = 0; i < lista_estad_sen_id.length - 1; i++ ) {
		nombre_estad_sen[lista_estad_sen_id[i]] 	= lista_estad_sen_nombre[i];
	}
	
	
	// Dimension de las Imagenes de las Señales
	
	var h_ls_img_id 			= document.getElementById("h_ls_img_id").value;
	lista_img_id 				= h_ls_img_id.split( "/*" );
	
	var h_ls_img_ancho_peq 		= document.getElementById("h_ls_img_ancho_peq").value;
	lista_img_ancho_peq 		= h_ls_img_ancho_peq.split( "/*" );
	
	var h_ls_img_alto_peq 		= document.getElementById("h_ls_img_alto_peq").value;
	lista_img_alto_peq 			= h_ls_img_alto_peq.split( "/*" );
	
	var h_ls_img_ancho_med 		= document.getElementById("h_ls_img_ancho_med").value;
	lista_img_ancho_med 		= h_ls_img_ancho_med.split( "/*" );
	
	var h_ls_img_alto_med 		= document.getElementById("h_ls_img_alto_med").value;
	lista_img_alto_med			= h_ls_img_alto_med.split( "/*" );
	
	img_dimension_ancho_peq 	= new Array();
	img_dimension_alto_peq 		= new Array();
	img_dimension_ancho_med 	= new Array();
	img_dimension_alto_med 		= new Array();
	for ( i = 0; i < lista_img_id.length - 1; i++ ) {
		img_dimension_ancho_peq[lista_img_id[i]] 	= lista_img_ancho_peq[i];
		img_dimension_alto_peq[lista_img_id[i]] 	= lista_img_alto_peq[i];
		img_dimension_ancho_med[lista_img_id[i]] 	= lista_img_ancho_med[i];
		img_dimension_alto_med[lista_img_id[i]] 	= lista_img_alto_med[i];
	}
}
		

// =================================================================================================================
// ================================== PINTA LAS SEÑALES DE TRANSITO EN EL MAPA =====================================
// =================================================================================================================

function pintar_resultados() {
	var infowindow_div_senal 			= document.getElementById('infowindow_div_senal').innerHTML;
	var infowindow_div_imagen 			= document.getElementById('infowindow_div_imagen').innerHTML;
	
	// Arreglo donde se dejan los Marcadores para ser pasados a la Funcion de Cluster
	markers = [];
	
	for ( var j = 0; j < lista_id_senal.length-1; j++ ) {
		// Obtenemos los atributos de cada Marcador
		var point 		= new google.maps.LatLng( parseFloat(lista_coord_x[j]).toFixed(8), parseFloat(lista_coord_y[j]).toFixed(8) );
		
		ancho_peq 	= img_dimension_ancho_peq[lista_id_senal_tra[j]];
		alto_peq 	= img_dimension_alto_peq[lista_id_senal_tra[j]];
		ancho_med 	= img_dimension_ancho_med[lista_id_senal_tra[j]];
		alto_med 	= img_dimension_alto_med[lista_id_senal_tra[j]];

		setear_dimension_imagen( lista_desc_image_sen[j] );
		
		var icono_marker = "../../publico/imagenes/senales/peq/" + lista_desc_image_sen[j] + ".gif";
		var image = new google.maps.MarkerImage( icono_marker,
			new google.maps.Size( ancho_peq, alto_peq ),
			new google.maps.Point( 0, 0 ),
			new google.maps.Point( parseInt(ancho_peq/2), parseInt(alto_peq/2) ));
		
		// Llenamos la Informacion del InfoWindow
		// Si el Tab es Señal
		html_tab1 	= infowindow_div_senal;
		html_tab1	= html_tab1.replace("%%element.id_senal%%",				lista_id_senal[j]);
		
		html_tab1 	= html_tab1.replace("%%element.nombre_tipo_sen%%",		nombre_tipo_sen[lista_id_tipo_sen[j]]);
		html_tab1 	= html_tab1.replace("%%element.nombre_categ_sen%%",		nombre_categ_sen[lista_id_categ_sen[j]]);
		html_tab1 	= html_tab1.replace("%%element.nombre_senal_tra%%",		nombre_senal_tra[lista_id_senal_tra[j]]);
		html_tab1 	= html_tab1.replace("%%element.nombre_estad_sen%%",		nombre_estad_sen[lista_id_estad_sen[j]]);
		if ( lista_id_status_sen[j] == "A" ) {
			html_tab1 = html_tab1.replace("%%element.id_status%%",			"ACTIVA");
		} else {
			html_tab1 = html_tab1.replace("%%element.id_status%%",			"INACTIVA");	
		}
		
		// Si el Tab es Imagen
		html_tab3 	= infowindow_div_imagen;
		html_tab3	= html_tab3.replace("%%element.id_senal%%",				lista_id_senal[j]);
		
		html_tab3 	= html_tab3.replace("%%element.desc_image_sen%%",		"<img src='../../publico/imagenes/senales/med/" + lista_desc_image_sen[j] + ".gif' title='" + nombre_senal_tra[lista_id_senal_tra[j]] + "' alt='" + nombre_senal_tra[lista_id_senal_tra[j]] + "'/>");
		
		// Configuramos el infoBubble
		infoBubble = new InfoBubble({
			maxWidth: 300,
			minWidth: 300,
			maxHeight: 200,
			minHeight: 200,
			map: map,
			shadowStyle: 1,
			padding: 5,
			backgroundColor: '#FFFFFF',
			borderRadius: 15,
			arrowSize: 20,
			borderWidth: 2,
			borderColor: color_menu,
			disableAutoPan: false,
			hideCloseButton: false,
			arrowPosition: 50,
			arrowStyle: 0
		});
		
		// Agregamos los Tabs al infoBubble
		infoBubble.addTab('Señal', 				html_tab1);
		infoBubble.addTab('Imagen', 			html_tab3);
		
		// Creamos el Marcador
		var marker = new google.maps.Marker({
			position: point,
			map: map,
			title: nombre_senal_tra[lista_id_senal_tra[j]],
			icon: image,
			infoBubblez: infoBubble
		});
		
		// Creamos el Evento
		google.maps.event.addListener(marker, "click", function () {
			if (!(this.infoBubblez).isOpen()) {
				if ( infoBubbleTurno != null ) {
					infoBubbleTurno.close();	
				}
				(this.infoBubblez).open(map, this);
				infoBubbleTurno = this.infoBubblez;
			}
		});
		
		// Agregamos el Marcador al Arreglo
		markers.push(marker);
	}
}